	*************************************************************************
	* File Name:	juneteenth_prq_replication_6.1.25.do      	         	*
	* Date:   		June 1, 2025    						             	*
	* Authors: 		Marty P. Jordan & Jamil S. Scott                     	*
	*                                                                    	*
	* Purpose:		Do file for "The Spread of Symbolic Policies:        	*
	*               Juneteenth, Interests, and Representation in         	*
	*               the U.S. States"                                     	*
	*                                                                    	*
	* Input Files:	juneteenth_replication.csv                     		 	*				
	*               juneteenth_st_obs_years.csv                          	*
	* 				                     								 	*
	* Output File:	juneteenth_replication_prq.log,                    	 	*				
	*               juneteenth_prq_replication.dta     	                 	*			
	*                                                                    	*
	*  				                                                     	*
	* Version:		Stata/SE 14.2 for Windows (64-bit x86-64)              	*
	* Computer: 	Dell Inc. Inspiron 14 7440 2-in-1, x64-based PC		 	* 
	*************************************************************************	

	**********************************************************************
	* Start log file													 *
	**********************************************************************

log using "juneteenth_replication_prq.log", replace text

	*************************
	* Specs and Preferences *
	*************************
	
version 14.2
set more off
quietly log
set seed 07312004 
set matsize 800

	******************************
	* Install necessary packages *
	******************************

ssc install clarify, replace
net install spost13_ado.pkg, from("https://jslsoc.sitehost.iu.edu/stata/") replace
ssc install mipolate, replace
net install gr0056, from("http://www.stata-journal.com/software/sj13-3") replace //marginscontplot
ssc install estout, replace
ssc install coefplot, replace
ssc install maptile, replace
ssc install spmap, replace
net install gr0075, from("http://www.stata-journal.com/software/sj18-4") replace // colorpalette
ssc install colrspace, replace
ssc install cleanplots, replace //*from("https://tdmize.github.io/data/cleanplots")
ssc install center, replace
ssc install rangestat, replace

	***********************************************************************
	* FIGURE 1: Create US map of policies with dates; import data for map *
	***********************************************************************

*For standard US state map: maptile_install using "http://files.michaelstepner.com/geo_state.zip"
*For regular state map or hexagon US map:

maptile_install using "http://files.michaelstepner.com/geo_state.zip"
maptile_install using "http://files.michaelstepner.com/geo_statehex.zip", replace
set scheme cleanplots, perm
graph set window fontface "Arial Narrow"

import delimited using juneteenth_st_obs_years.csv

*Create bold var for those states that recognized Juneteenth and make it a 
*legal holiday or formal commemoration

maptile holiday, geo(statehex) geoid(state) fcolor(white red*.65) labelhex(year_4)    ///  
 twopt( ///
  note("Source: Congressional Research Service (CRS). 2024. ''Juneteenth: Fact Sheet.'' June 13, 2024. https://fas.org/sgp/crs/misc/R44865.pdf" ///
  , size(vsmall)) ///
  legend(lab(2 "Juneteenth Recognition") lab(3 "Juneteenth Recognition & Holiday")) ///
  legend(size(small)) ///
  saving(figure1, replace) ///
  )

*title("{fontface Arial Bold: U.S. State Adoptions of Juneteenth Holidays}") ///
*subtitle("1980 - 2022") ///  
  
graph export figure1.pdf, replace 
 
*For more info, see here: https://michaelstepner.com/maptile/, and 
*https://medium.com/the-stata-guide/stata-graphs-hex-maps-of-the-2020-usa-presidential-elections-ce106f6f8095.

*Clear data
clear

	**************************************************************
	* Import Data from Excel file with firstrow as variable name *
	**************************************************************

import delimited using juneteenth_replication.csv

	********************************************************
	* Interpolate missing values for independent variables *
	* using the mipolate Stata commands, linear epolate.   *
	* Then, drop original vars, replace with linearly      *
	* interpolated and extrapolated variables.             *
	********************************************************

sort state year

mipolate poptotal styear, generate(ipoptotal) linear epolate
mipolate pctblack styear, generate(ipctblack) linear epolate
mipolate bowen_legprof_firstdim styear, generate(ibowen_legprof_firstdim) linear epolate
mipolate ig_cir styear, generate(iig_cir) linear epolate
mipolate citizenideol styear, generate(icitizenideol) linear epolate
mipolate govideol styear, generate(igovideol) linear epolate
mipolate raceresent styear, generate(iraceresent) linear epolate
mipolate masssociallib_est styear, generate(imasssociallib_est) linear epolate
mipolate ig_cir_gc styear, generate(iig_cir_gc) linear epolate

drop poptotal
drop pctblack
drop bowen_legprof_firstdim
drop ig_cir
drop citizenideol
drop govideol
drop raceresent
drop masssociallib_est
drop ig_cir_gc

rename ipoptotal poptotal
rename ipctblack pctblack
rename ibowen_legprof_firstdim bowen_legprof_firstdim
rename iig_cir ig_cir
rename icitizenideol citizenideol
rename igovideol govideol
rename iraceresent raceresent
rename imasssociallib_est soclib
rename iig_cir_gc ig_cir_gc

	**********************************************
	* Label the variables and respective values  *
	* For full descriptions and sources for      *
	* each variable, see the codebook            *
	*                                            *
	* REMEMBER: REMOVE VARS NOT USED IN ANALYSES *
	**********************************************

label variable	year "Year"
label variable	st	"U.S. state abbreviation"
label variable	stateno	"U.S. state id number"
label variable	state	"U.S. state name"
label variable  styear "U.S. state year id number"
label variable	recog	"State adopted juneteenth commem / recognition=1, 0=no"
label variable	holiday	"State adopted juneteenth st. holiday /day of obser.=1, 0=no"
label variable  imitate_recog "Cum. No. of States (t-1) adopting recog/commemoration"
label variable  imitate_holiday "Cum. No. of States (t-1) adopting holiday/observance"
label variable  neigh_recog "Prop. of neighbors adopting J19 recog/commemoration"
label variable  neigh_holiday "Prop. of neighbors adopting J19 holiday/observance"
label variable	poptotal "Total population per state"
label variable	pctblack "Pct. state's residents Black/Af.Am."
label variable	govparty_a	"Governor's party: 0=Rep., 1=Dem, .5=other"
label variable	bowen_legprof_firstdim	"1st dim. leg profess. score" 
label variable	ig_cir "No. of civil - minority rights interest groups" 
label variable	citizenideol "Citizen ideology measure, higher=more liberal"
label variable	govideol "NOMINATE measure state gov ideology"
label variable	leg_black "Avg. Pct. St. legislators identifying as Black/African Am."
label variable	lynch "Cum. No. of lynchings of Black persons from 1882-1968"
label variable	confederacy	"State was part of the confederacy (1=yes, 0=no)"
label variable	raceresent "Racial resentment score" 
label variable  monuments "Cumulative no. of confederate statues or monuments"
label variable  soclib "Estimate of Mass Public Social Liberalism"
label variable  ig_cir_gc "No. of Civil-Minority Rights Int. Groups-Garlick/Cluverius Measure"
label variable  gub_election "Gubernatorial Election Year"
label variable  divided_gov "Divided State Gov=1, Unified=0"	
label variable  sen_dem_prop_all	"Proportion Dem Control of St. Senate" 
label variable  hs_dem_prop_all	"Proportion Dem Control of St. House"
label variable  region "State geographic region, 1=south, 2=west, 3=midwest, 4=northeast"

	****************************************************
	* Transform some variables and create time counter *
	****************************************************

*Log monuments to account for states with disproportionate number and as 
*robustness checks

*We opt to natural log these variables because the natural-log scale is more
*interpretable than the log scale. A change of 1 in x corresponds to a % change
*in y read from the coefficient. See Gelman and Hill (2007). Data Analysis using
*Regression and Multilevel/Hiearchical Models. Cambridge University Press: 
*Cambridge, MA (pages 60-61). 

gen ln_monuments=ln(monuments+1)
label variable ln_monuments "Nat log of cum. no. of statues or monumnets in state"

*Log state populations

gen ln_poptotal=ln(poptotal)
label variable ln_poptotal "Nat Log of total state population"

*Create time counter, and transformed time counters to control for 
*duration dependence

gen time=(year - 1979)

gen time2=time^2
gen time3=time^3
gen time4=time^4

label variable time "Yearly time counter with 1980=1 to 2022=43"
label variable time2 "Yearly time counter squared"
label variable time3 "Yearly time counter cubed"
label variable time4 "Yearly time counter quadrupled" 

*Modify racial resentment and pct Black legislator from 0 to 1 var to 0 to 100 
*var for ease of interpretation and putting on same scale as pct Black 

gen leg_black_100 = (leg_black*100)
drop leg_black
rename leg_black_100 leg_black
label variable	leg_black "Avg % St. legislators identifying as Black/African Am."

gen raceresent_100 = (raceresent*100)
drop raceresent
rename raceresent_100 raceresent
label variable	raceresent "Racial resentment score" 

*Create Democratic Governor variable

gen demgov=.
replace demgov=1 if govparty_a==1
replace demgov=0 if govparty_a==.5
replace demgov=0 if govparty_a==0

label variable demgov "State has Democratic Governor"

*Create Average Proportion of State Legislature controlled by Dems

gen leg_dem_prop_all=.
replace leg_dem_prop_all=(sen_dem_prop_all + hs_dem_prop_all)/2

label variable leg_dem_prop_all "Average Proportion of State Legislature controlled by Dems"

* Create an interest group variable standardized by population. 

gen ig_cir_pcap= (ig_cir)/poptotal
gen ig_cir_pcap_x100 = ig_cir_pcap*100000
label variable ig_cir_pcap "No. of Civil Rights Int. Groups per Capita"
label variable ig_cir_pcap_x100 "Civil Rights Int. Groups per 100k pop"

* Create a Confederate Monuments variable standardized by population.

gen monuments_pcap = (monuments/poptotal)
gen monuments_pcap_x100 = monuments_pcap*100000
label variable monuments_pcap "No. of Confederate Monuments per Capita"
label variable monuments_pcap_x100 "Confederate Monuments per 100k pop"

* Construct interaction term if needed

gen resentxlegblack = raceresent*leg_black
label variable resentxlegblack "Interaction term Racial Resentment x Black Representation"

* Construct a South variable

gen south=0
replace south=1 if region==1
label variable south "Southern state"

	*****************************************
	* Create ideological distance variables *
	*****************************************
	
*Create ideological distance for the recognition variable.
*Ideological distance between state of interest at time t for this policy 
*adoption is equal to the *Absolute value of | (a) ideology of the state at 
*time t minus ((b)the average ideology of states adopting in most recent year
*(k) plus (c) the average ideology of states that have adopted in prior years (j)
*divided by 2.) I also multiply by -1 to reverse code so that the more negative
*the greater the ideological distance between states. For this variable 
*construction: See Mallinson, Daniel J. 2021. 
*“Who Are Your Neighbors? The Role of Ideology and Decline of Geographic 
*Proximity in the Diffusion of Policy Innovations.” Policy Studies Journal 
*49 (1): 67–88. https://doi.org/10.1111/psj.12351.

	***
	* Use the govideol variable: Berry et al. (2010) measure
	***

*** For RECOGNITIONS USING GOVIDEOL VAR	
	
*(a): use govideol variable (Nominate measure of state government ideology)
*(b): construct recentgovideol variable to capture the average ideology of
*states adopting policy in most recent years.

sort year
gen recog_recentgovideol=.
forvalues i=1979(1)2022{
summarize govideol if year==`i' & recog==1
replace recog_recentgovideol=r(mean) if year==`i'
} 
replace recog_recentgovideol = recog_recentgovideol[_n-1] if missing(recog_recentgovideol) 

*(c): construct cumulative average ideology of states that have adopted policy in   
*all prior years using var: cumgovideol

sort stateno 
sort recog year
bysort recog (year): gen recog_cumgovideol=sum(recog_recentgovideol)/_n if recog==1 
gsort +year -recog
replace recog_cumgovideol = recog_cumgovideol[_n-1] if missing(recog_cumgovideol) 
 
gen recog_simgovideol = (abs(((recog_recentgovideol+recog_cumgovideol)/2)- govideol))*-1

drop recog_recentgovideol recog_cumgovideol

label variable recog_simgovideol "Recognition:Similar ideol score between state and prior adopters"

*For HOLIDAYS USING GOVIDEOL VAR	

*(a): use govideol variable (Nominate measure of state government ideology)
*(b): construct recentgovideol variable to capture the average ideology of
*states adopting policy in most recent years.

sort year
gen holid_recentgovideol=.
forvalues i=1979(1)2021{
summarize govideol if year==`i' & holiday==1
replace holid_recentgovideol=r(mean) if year==`i'
} 
replace holid_recentgovideol = holid_recentgovideol[_n-1] if missing(holid_recentgovideol) 

*(c): construct cumaltive average ideology of states that have adopted policy in   
*all prior years using var: cumgovideol

sort stateno
sort holiday year
bysort holiday (year): gen holid_cumgovideol=sum(holid_recentgovideol)/_n if holiday==1 
gsort +year -holiday
replace holid_cumgovideol = holid_cumgovideol[_n-1] if missing(holid_cumgovideol) 
 
gen holid_simgovideol = (abs(govideol - ((holid_recentgovideol+holid_cumgovideol)/2)))*-1

drop holid_recentgovideol holid_cumgovideol

label variable holid_simgovideol "Holiday: Similar Ideology Score between state and prior adopters"


	***
	* ROBUSTNESS CHECK WITH OTHER IDEOLOGY VARIABLES: BERRY ET AL. (2010) CITIZEN IDEOL VAR
	***

	***
	* Use the citizen ideology variable: Berry et al. (2010) measure   citizenideol
	***

*** For RECOGNITIONS USING citizenideol VAR	
	
*(a): use citizenideol variable (Nominate measure of Berry et al. 2020 citizen ideology)
*(b): construct recentcitizenideol variable to capture the average ideology of
*states adopting policy in most recent years.

sort year
gen recog_recentcitizenideol=.
forvalues i=1979(1)2022{
summarize citizenideol if year==`i' & recog==1
replace recog_recentcitizenideol=r(mean) if year==`i'
} 
replace recog_recentcitizenideol = recog_recentcitizenideol[_n-1] if missing(recog_recentcitizenideol) 

*(c): construct cumulative average ideology of states that have adopted policy in   
*all prior years using var: cumcitizenideol

sort stateno 
sort recog year
bysort recog (year): gen recog_cumcitizenideol=sum(recog_recentcitizenideol)/_n if recog==1 
gsort +year -recog
replace recog_cumcitizenideol = recog_cumcitizenideol[_n-1] if missing(recog_cumcitizenideol) 
 
gen recog_simcitizenideol = (abs(((recog_recentcitizenideol+recog_cumcitizenideol)/2)- citizenideol))*-1

drop recog_recentcitizenideol recog_cumcitizenideol

*For HOLIDAYS USING citizenideol VAR	

*(a): use citizenideol variable (Nominate measure of state government ideology)
*(b): construct recentcitizenideol variable to capture the average ideology of
*states adopting policy in most recent years.

sort year
gen holid_recentcitizenideol=.
forvalues i=1979(1)2021{
summarize citizenideol if year==`i' & holiday==1
replace holid_recentcitizenideol=r(mean) if year==`i'
} 
replace holid_recentcitizenideol = holid_recentcitizenideol[_n-1] if missing(holid_recentcitizenideol) 

*(c): construct cumaltive average ideology of states that have adopted policy in   
*all prior years using var: cumcitizenideol

sort stateno
sort holiday year
bysort holiday (year): gen holid_cumcitizenideol=sum(holid_recentcitizenideol)/_n if holiday==1 
gsort +year -holiday
replace holid_cumcitizenideol = holid_cumcitizenideol[_n-1] if missing(holid_cumcitizenideol) 
 
gen holid_simcitizenideol = (abs(citizenideol - ((holid_recentcitizenideol+holid_cumcitizenideol)/2)))*-1

drop holid_recentcitizenideol holid_cumcitizenideol

label variable recog_simcitizenideol "Alt Ideol Measure: Recognition: Similar Ideology Score between state and prior adopters, Citizen Ideol"
label variable holid_simcitizenideol "Alt Ideol Measure: Holiday: Similar Ideology Score between state and prior adopters, Citizen Ideol"
	
	***
	* ROBUSTNESS CHECK WITH OTHER IDEOLOGY VARIABLES: Caughey & Warshaw (2018)
	* measure of state social liberalism VAR 
	***

	***
	* Use the soclib variable: Caughey & Warshaw (2018) measure
	***

*** For RECOGNITIONS USING soclib VAR	
	
*(a): use soclib variable (Caughey & Warshaw (2018) social liberalism measure)
*(b): construct recentsoclib variable to capture the average ideology of
*states adopting policy in most recent years.

sort year
gen recog_recentsoclib=.
forvalues i=1979(1)2022{
summarize soclib if year==`i' & recog==1
replace recog_recentsoclib=r(mean) if year==`i'
} 
replace recog_recentsoclib = recog_recentsoclib[_n-1] if missing(recog_recentsoclib) 

*(c): construct cumulative average ideology of states that have adopted policy in   
*all prior years using var: cumsoclib

sort stateno 
sort recog year
bysort recog (year): gen recog_cumsoclib=sum(recog_recentsoclib)/_n if recog==1 
gsort +year -recog
replace recog_cumsoclib = recog_cumsoclib[_n-1] if missing(recog_cumsoclib) 
 
gen recog_simsoclib = (abs(((recog_recentsoclib+recog_cumsoclib)/2)- soclib))*-1

drop recog_recentsoclib recog_cumsoclib

*For HOLIDAYS USING soclib VAR	

*(a): use soclib variable (Nominate measure of state government ideology)
*(b): construct recentsoclib variable to capture the average ideology of
*states adopting policy in most recent years.

sort year
gen holid_recentsoclib=.
forvalues i=1979(1)2021{
summarize soclib if year==`i' & holiday==1
replace holid_recentsoclib=r(mean) if year==`i'
} 
replace holid_recentsoclib = holid_recentsoclib[_n-1] if missing(holid_recentsoclib) 

*(c): construct cumaltive average ideology of states that have adopted policy in   
*all prior years using var: cumsoclib

sort stateno
sort holiday year
bysort holiday (year): gen holid_cumsoclib=sum(holid_recentsoclib)/_n if holiday==1 
gsort +year -holiday
replace holid_cumsoclib = holid_cumsoclib[_n-1] if missing(holid_cumsoclib) 
 
gen holid_simsoclib = (abs(soclib - ((holid_recentsoclib+holid_cumsoclib)/2)))*-1

drop holid_recentsoclib holid_cumsoclib

label variable recog_simsoclib "Alt Ideol Measure: Recognition: Similar Social Liberalism Score between state and prior adopters"
label variable holid_simsoclib "Alt Ideol Measure: Holiday: Similar Social Liberalism Score between state and prior adopters"
	

			***************************
			*                         * 
			* JUNETEENTH RECOGNITIONS *
			*                         *
			***************************
	
	
	************************************************************************
	* MODELS 1 & 2: Logistic regression models testing factors for states' *              
	* adoption of Juneteenth RECOGNITIONS.                                 * 
	************************************************************************

tsset stateno year		
	
*** MODEL 1 ***	

logit recog                                          ///   
imitate_recog                   ///
neigh_recog                         ///
recog_simgovideol ///
l.ig_cir_pcap_x100 ///
l.raceresent l.leg_black  ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal  ///
time time2 time3 time4, vce(cluster stateno)

estat ic

*** MODEL 2 *** 

*** With interaction term between Black representation
*** and Racial Resentment following Hansen and Treul (2015)'s work on 
*** symoblic and substantive representation of minority groups and
*** Preuh's (2007) work on the conditional effect of Black representation

logit recog                                          ///   
imitate_recog                  ///
neigh_recog                         ///
recog_simgovideol ///
l.ig_cir_pcap_x100 ///
l.c.raceresent l.c.leg_black l.c.raceresent#l.c.leg_black ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal     ///  
time time2 time3 time4, vce(cluster stateno)

estat ic


	*************************************************************************
	* FIGURE 2, Part 1: Marginal Effect of Black Representation on Adopting *
	* Recognitions Given Racial Resentment                                  *
	*************************************************************************

*** Marginal Effects, Margins Plot for Interaction term between Black
*** representation and Racial Resentment for RECOGNITIONS 

*** Marginal effects of Black representation on State adopting
*** Juneteenth recognition given representative values of Racial resentment. 
*** Marginal Effeects at the Means 

margins, dydx(L.leg_black) at(L.raceresent=(50(5)75)) atmeans  
marginsplot, recast(line) noci scheme(s1manual) xtitle("Percent Racial Resentment", size(small)) ///
ytitle ("Marginal Effect on Pr(St. Adopting Juneteenth RECOGNITIONS)", size(small)) title("RECOGNITIONS") ///
yline(0, lcolor(red)) plotopts(msize(small)) saving(figure2_1.gph, replace)
*title("Marginal Effect of Black Representation on St. Adopting Juneteenth Recognitions Given Racial Resentment", size(small))


	***********************************************************************
	* FIGURE A5: Marginal Effect of Black Representation on Adopting      *
	* Recognitions Given Racial Resentment                                *
	***********************************************************************

*** Now calculate predicted prob of adopting Juneteenth recognitions given
*** different levels of pct Black legislators and racial resentment.  

margins, at(l.raceresent=(55(5)75) l.leg_black=(0(6)30)) atmeans
marginsplot, noci scheme(s1manual) xtitle("Pct. Racial Resentment", size(small)) ///
ytitle ("Pr(St. Adopting Juneteenth RECOGNITIONS)", size(small)) title("") ///
yline(0, lcolor(red)) plotopts(msize(small)) ///
legend(position(3) cols(1) size(small) subtitle("Pct. Black Legislators", size(small))) ///
legend(label(1 "Pct. Black Leg.=0%") label(2 "Pct. Black Leg.=6%") label(3 "Pct. Black Leg.=12%") label(4 "Pct. Black Leg.=18%") label(5 "Pct. Black Leg.=24%") label(6 "Pct. Black Leg.=30%")) ///
legend (order(1 "Pct. Black Leg.=0%" 2 "Pct. Black Leg.=6%" 3 "Pct. Black Leg.=12%" 4 "Pct. Black Leg.=18%" 5 "Pct. Black Leg.=24%" 6 "Pct. Black Leg.=30%")) ///
saving(figureA5, replace)

graph export figureA5.pdf, replace

	***********************************************************************
	* FIGURE A1: Average Adjusted Prediction Plots for Adopting Juneteenth*
	* Recognitions at Representative Values                               *
	***********************************************************************

*** Plotting the Average Adjusted Predictions at Representative Values 
*** for Juneteenth RECOGNITIONS across
*** different covariates, holding all other vars at their means
*** using Patrick Royston’s mcp (aka marginscontplot) command

tsset stateno year

logit recog                                          ///   
imitate_recog                  ///
neigh_recog                         ///
recog_simgovideol ///
ig_cir_pcap_x100 ///
raceresent leg_black resentxlegblack  ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
bowen_legprof_firstdim /// 
south monuments_pcap_x100 ln_poptotal     ///  
time time2 time3 time4, vce(cluster stateno)

mcp recog_simgovideol, var1(40) margopts(atmeans) plotopts(scheme(s1manual) xtitle("Ideological Similarity Btwn State and Prior Adopters") ///
ytitle("Pr(Adopting Juneteenth Recognition)") title("EMULATION: IDEOLOGICAL SIMILARITY") yline(0, lcolor(red)) ///
saving(ideolsim, replace) ) show
graph export pprob_ideologicalsimilarity_recog.pdf, replace 

mcp ig_cir_pcap_x100, var1(40) margopts(atmeans) plotopts(scheme(s1manual) xtitle("No. of Civil Rights Interest Groups per 100k population") ///
ytitle("Pr(Adopting Juneteenth Recognition)") title("CIVIL RIGHTS INTEREST GROUPS") yline(0, lcolor(red)) ///
saving(civilrights, replace)) show
graph export pprob_civilrights_recog.pdf, replace 

margins, at(divided_gov=(0(1)1))
marginsplot, noci scheme(s1manual) xtitle("Divided Government") ///
ytitle("Pr(Adopting Juneteenth Recognition)") title("DIVIDED GOVERNMERNT") /// 
yline(0, lcolor(red)) yscale(range(0 .)) ///
saving(divided_gov_recog, replace) 
graph export pprob_divided_gov_recog.pdf, replace 

margins, at(south=(0(1)1))
marginsplot, noci scheme(s1manual) xtitle("Southern State") ///
ytitle("Pr(Adopting Juneteenth Recognition)") title("SOUTHERN STATES") /// 
yline(0, lcolor(red)) yscale(range(0 .)) ///
saving(south, replace) 
graph export pprob_south_recog.pdf, replace 

mcp monuments_pcap_x100, var1(40) margopts(atmeans) plotopts(scheme(s1manual) xtitle("Confederate Monuments Per 100k population") ///
ytitle("Pr(Adopting Juneteenth Recognition)") title("CONFEDERATE MONUMENTS") yline(0, lcolor(red)) yscale(range(0 .)) ///
saving(monuments_recog, replace)) show
graph export pprob_monumentspcap_recog.pdf, replace 

gr combine ideolsim.gph civilrights.gph divided_gov_recog.gph south.gph ///
monuments_recog.gph, com iscale(1) scheme(s1manual) altshrink 

graph export figureA1.pdf, replace

	************************************************************************
	* FIGURE A3: AME Coefficient Plot for Adopting Juneteenth Recognitions *
	************************************************************************

*** Predicted probabilities for Juneteenth RECOGNITIONS ***

quietly logit recog                                          ///   
imitate_recog                  ///
neigh_recog                         ///
recog_simgovideol ///
ig_cir_pcap_x100 ///
raceresent leg_black resentxlegblack  ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
bowen_legprof_firstdim /// 
south monuments_pcap_x100 ln_poptotal     ///  
time time2 time3 time4, vce(cluster stateno)

margins, dydx(*)

quietly logit recog imitate_recog neigh_recog recog_simgovideol ///
c.ig_cir_pcap_x100 c.raceresent c.leg_black c.resentxlegblack i.demgov ///
i.divided_gov c.leg_dem_prop_all i.gub_election c.bowen_legprof_firstdim ///
i.south c.monuments_pcap_x100 c.ln_poptotal time time2 time3 time4, ///
vce(cluster stateno)

mchange recog_simgovideol , dec(6) uncentered commands statistics(all)
mchange ig_cir_pcap_x100, dec(6) uncentered commands statistics(all) 
mchange raceresent, dec(6) uncentered commands statistics(all) 
mchange leg_black, dec(6) uncentered commands statistics(all)
mchange resentxlegblack, dec(6) uncentered commands statistics(all) 
mchange divided_gov, dec(6) uncentered commands statistics(all) 
mchange south, dec(6) uncentered commands statistics(all) 
mchange monuments_pcap_x100, dec(6) uncentered commands statistics(all) 

*** Marginal Effects Coefficient Plot for Juneteenth RECOGNITIONS
*** Center continuous variables for ease of interpretation on AME plots

center recog_simgovideol ig_cir_pcap_x100 raceresent leg_black resentxlegblack ///
	   monuments_pcap_x100 , standardize prefix(std_)	
	   
tsset stateno year

quietly logit recog                                          ///   
imitate_recog                   ///
neigh_recog                         ///
std_recog_simgovideol ///
l.std_ig_cir_pcap_x100 ///
l.std_raceresent l.std_leg_black l.std_resentxlegblack  ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south std_monuments_pcap_x100 l.ln_poptotal     ///  
time time2 time3 time4, vce(cluster stateno)

mtable
margins, dydx(std_recog_simgovideol l.std_ig_cir_pcap_x100 l.std_raceresent l.std_leg_black ///
l.std_resentxlegblack divided_gov south std_monuments_pcap_x100) post

coefplot (, label(Coefficient) msymbol(oh)) ///
	 , xline(0) legend(rows(1)) drop(_cons) scheme(s1manual) ///
	 coeflabels(std_recog_simgovideol="Emulation: Ideological Similarity" ///
	 L.std_ig_cir_pcap_x100="Civ. Rights Interest Groups per 100k pop" ///
	 L.std_raceresent="Racial Resentment" ///
	 L.std_resentxlegblack="Racial Resentment X Pct. Black Legislators" ///
	 L.std_leg_black="Pct. Black Legislators" ///
	 divided_gov="Divided St. Government"  ///
	 south="Southern States" std_monuments_pcap_x100="Confederate Monuments per 100k pop") ///
	 nolabels ysize(8) xsize(14) xtitle("Average Marginal Effects") legend(off)

graph export figureA3.pdf, replace 

drop std_recog_simgovideol std_ig_cir_pcap_x100 std_raceresent ///
std_leg_black std_resentxlegblack std_monuments_pcap_x100


*** AMEs for interaction term are not included because you can't really have a
*** marginal effect for an interaction term. Marginal effects are for the main
*** effects in a model because it is the calculated change in the DV per unit
*** change in the IV, all else held constant. But you can't change an interaction
*** term while the constituent terms are held constant. So marginal effects of
*** interaction term don't really exist.  



			***************************
			*                         * 
			* JUNETEENTH HOLIDAYS     *
			*                         *
			***************************

			
	*************************************************************************
	* MODELS 3 & 4: Logistic regression models testing factors for states'  *              
	* adoption of Juneteenth HOLIDAYS.                                      * 
	*************************************************************************

tsset stateno year		
	
*** MODEL 3 ***	
	
logit holiday                                          ///   
imitate_holid                   ///
neigh_holid                         ///
holid_simgovideol ///
l.ig_cir_pcap_x100 ///
l.raceresent l.leg_black  ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal  ///
time time2 time3 time4, vce(cluster stateno)

estat ic

*** MODEL 4 *** With interaction term between Black representation
*** and Racial Resentment following Preuhs' (2006) & Hansen and Treul (2015)'s  
*** work on symoblic and substantive representation of minority groups

logit holiday                                          ///   
imitate_holid                   ///
neigh_holid                         ///
holid_simgovideol ///
l.ig_cir_pcap_x100 ///
l.raceresent l.leg_black l.c.raceresent#l.c.leg_black  ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal  ///
time time2 time3 time4, vce(cluster stateno)

estat ic

	*************************************************************************
	* FIGURE 2, Part 2: Marginal Effect of Black Representation on Adopting *
	* Recognitions Given Racial Resentment                                  *
	*************************************************************************

*** Marginal Effects, Margins Plot for Interaction term between Black
*** representation and Racial Resentment for HOLIDAYS 

*** Average Black political representation's marginal effect on State adopting
*** Juneteenth Holidays given Racial resentment. 

margins, dydx(L.leg_black) at(L.raceresent=(50(5)75)) atmeans  
marginsplot, recast(line) noci scheme(s1manual) xtitle("Percent Racial Resentment", size(small)) ///
ytitle ("Marginal Effect on Pr(St. Adopting Juneteenth HOLIDAYS)", size(small)) title("HOLIDAYS") ///
yline(0, lcolor(red)) plotopts(msize(small)) saving(figure2_2.gph, replace)
*title("Marginal Effect of Black Representation on St. Adopting Juneteenth Holidays Given Racial Resentment", size(small))

gr combine figure2_1.gph figure2_2.gph ///
, com iscale(1.5) scheme(s1manual) altshrink  

graph export figure2.pdf, replace

*former plot is the mean Black political representation's marginal effect 
*on a state's predicted probability of adopting Juneteenth Holidays when 
*state's racial resentment is at 50% is, on average, -0.2 points, when
*all the other variables are held at their means. Effectively, Black
*political representation appears to have little influence on states honoring
*Juneteenth when anti-Black sentiment is low (in relative terms compared to other
*states). However, as negative racial animus in a state increases to 75%, mean Black
*political representation's marginal effect is a positive 0.03 points, holding all
*other variables at their means. That is a 115% increase in effect.
*Increasing Black representation in the state 
*legislature appears to mitigate high anti-Black sentiments.   

	***********************************************************************
	* FIGURE A6: Marginal Effect of Black Representation on Adopting      *
	* Holidays Given Racial Resentment                                    *
	***********************************************************************
  
*** Now calculate predicted prob of adopting Juneteenth Holidays given
*** different levels of pct Black legislators and racial resentment.  

margins, at(l.raceresent=(55(5)75) l.leg_black=(0(6)30)) atmeans
marginsplot, noci scheme(s1manual) xtitle("Pct. Racial Resentment", size(small)) ///
ytitle ("Pred. Prob. of St. Adopting Juneteenth Holidays", size(small)) title("") ///
yline(0, lcolor(red)) plotopts(msize(small)) ///
legend(position(3) cols(1) size(small) subtitle("Pct. Black Legislators", size(small))) ///
legend(label(1 "Pct. Black Leg.=0%") label(2 "Pct. Black Leg.=6%") label(3 "Pct. Black Leg.=12%") label(4 "Pct. Black Leg.=18%") label(5 "Pct. Black Leg.=24%") label(6 "Pct. Black Leg.=30%")) ///
legend (order(1 "Pct. Black Leg.=0%" 2 "Pct. Black Leg.=6%" 3 "Pct. Black Leg.=12%" 4 "Pct. Black Leg.=18%" 5 "Pct. Black Leg.=24%" 6 "Pct. Black Leg.=30%")) ///
saving(prprob_legblack_resent_holid, replace)

graph export figureA6.pdf, replace

	***********************************************************************
	* FIGURE A2: Average Adjusted Prediction Plots for Adopting Juneteenth*
	* Holidays at Representative Values                                   *
	***********************************************************************

*** Plotting the Average Adjusted Predictions at Representative Values 
*** for Juneteenth HOLIDAYS across
*** different covariates, holding all other vars at their means
*** using Patrick Royston’s mcp (aka marginscontplot) command

tsset stateno year

logit holiday                                          ///   
imitate_holid                   ///
neigh_holid                         ///
holid_simgovideol ///
ig_cir_pcap_x100 ///
raceresent leg_black resentxlegblack  ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
bowen_legprof_firstdim /// 
south monuments_pcap_x100 ln_poptotal  ///
time time2 time3 time4, vce(cluster stateno)

mcp holid_simgovideol, var1(40) margopts(atmeans) plotopts(scheme(s1manual) xtitle("Ideological Similarity Btwn State and Prior Adopters") ///
ytitle("Pr(Adopting Juneteenth Holiday)") title("EMULATION: IDEOLOGICAL SIMILARITY") yline(0, lcolor(red)) ///
saving(ideolsim_holid, replace) ) show
graph export pprob_ideologicalsimilarity_holid.pdf, replace 

mcp ig_cir_pcap_x100, var1(40) margopts(atmeans) plotopts(scheme(s1manual) xtitle("Civil Rights Interest Groups per 100k") ///
ytitle("Pr(Adopting Juneteenth Holiday)") title("CIVIL RIGHTS INTEREST GROUPS") yline(0, lcolor(red)) ///
saving(civilrights_holid, replace)) show
graph export pprob_civilrights_holid.pdf, replace 

margins, at(divided_gov=(0(1)1))
marginsplot, noci scheme(s1manual) xtitle("Divided St. Government") ///
ytitle("Pr(Adopting Juneteenth Holiday)") title("DIVIDED STATE GOVERNMENT") /// 
yline(0, lcolor(red)) yscale(range(0 .)) ///
saving(divided_gov_holid, replace) 
graph export pprob_divided_gov_holid.pdf, replace 

margins, at(south=(0(1)1))
marginsplot, noci scheme(s1manual) xtitle("Southern State") ///
ytitle("Pr(Adopting Juneteenth Holiday)") title("SOUTHERN STATES") /// 
yline(0, lcolor(red)) yscale(range(0 .)) ///
saving(south_holid, replace) 
graph export pprob_south_holid.pdf, replace 

mcp monuments_pcap_x100, var1(40) margopts(atmeans) plotopts(scheme(s1manual) xtitle("Confederate Monuments per 100k") ///
ytitle("Pr(Adopting Juneteenth Holiday)") title("CONFEDERATE MONUMENTS") yline(0, lcolor(red)) ///
saving(monuments_pcap_holid, replace)) show
graph export pprob_monuments_holid.pdf, replace 

gr combine ideolsim_holid.gph civilrights_holid.gph divided_gov_holid.gph ///
south_holid.gph monuments_pcap_holid.gph , com iscale(1) scheme(s1manual) altshrink 

graph export figureA2.pdf, replace

	************************************************************************
	* FIGURE A4: AME Coefficient Plot for Adopting Juneteenth Recognitions *
	************************************************************************

*** Predicted probabilities for Juneteenth HOLIDAYS ***

quietly logit holiday imitate_holid neigh_holid holid_simgovideol ///
c.ig_cir_pcap_x100 c.raceresent c.leg_black c.resentxlegblack i.demgov ///
i.divided_gov c.leg_dem_prop_all i.gub_election c.bowen_legprof_firstdim ///
i.south c.monuments_pcap_x100 c.ln_poptotal time time2 time3 time4, ///
vce(cluster stateno)

mchange holid_simgovideol , dec(6) uncentered commands statistics(all)
mchange ig_cir_pcap_x100, dec(6) uncentered commands statistics(all) 
mchange raceresent, dec(6) uncentered commands statistics(all) 
mchange leg_black, dec(6) uncentered commands statistics(all)
mchange resentxlegblack, dec(6) uncentered commands statistics(all) 
mchange divided_gov, dec(6) uncentered commands statistics(all) 
mchange south, dec(6) uncentered commands statistics(all) 
mchange monuments_pcap_x100, dec(6) uncentered commands statistics(all) 

*** Marginal Effects Coefficient Plot for Juneteenth HOLIDAYS

*** Center these additional continuous variables for ease of interpretation on AME plots

center holid_simgovideol ig_cir_pcap_x100 raceresent leg_black resentxlegblack ///
	   monuments_pcap_x100 , standardize prefix(std_)	
	   
tsset stateno year

quietly logit holiday                                          ///   
imitate_holid                   ///
neigh_holid                         ///
std_holid_simgovideol ///
l.std_ig_cir_pcap_x100 ///
l.std_raceresent l.std_leg_black l.std_resentxlegblack  ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south std_monuments_pcap_x100 l.ln_poptotal     ///  
time time2 time3 time4, vce(cluster stateno)

mtable
margins, dydx(std_holid_simgovideol l.std_ig_cir_pcap_x100 ///
l.std_raceresent l.std_leg_black l.std_resentxlegblack ///
	   std_monuments_pcap_x100 south divided_gov) post

coefplot (, label(Coefficient) msymbol(oh)) ///
	 , xline(0) legend(rows(1)) drop(_cons) scheme(s1manual) ///
	 coeflabels(std_holid_simgovideol="Emulation: Ideological Similarity" ///
	 L.std_ig_cir_pcap_x100="Civ. Rights Interest Groups per 100k pop" ///
	 L.std_raceresent="Racial Resentment" ///
	 L.std_leg_black="Pct. Black Legislators" ///
	 L.std_resentxlegblack="Racial Resentment X Pct. Black Legislators" ///
	 divided_gov="Divided St. Government" ///
	 south="Southern States" ///
	 std_monuments_pcap_x100="Confederate Monuments per 100k pop" ) ///
	 nolabels ysize(8) xsize(14) xtitle("Average Marginal Effects") legend(off)

graph export figureA4.pdf, replace 

drop std_holid_simgovideol std_ig_cir_pcap_x100 std_raceresent ///
std_leg_black std_resentxlegblack std_monuments_pcap_x100

	*********************
	* Robustness checks *
	*********************

	************
	* TABLE A2 *
	************

*** Use confederacy variable rather than south regional variable	
	
tsset stateno year
	
logit recog                                          ///   
imitate_recog                  ///
neigh_recog                         ///
recog_simgovideol ///
l.ig_cir_pcap_x100 ///
l.c.raceresent l.c.leg_black l.c.raceresent#l.c.leg_black ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
confederacy monuments_pcap_x100 l.ln_poptotal     ///  
time time2 time3 time4, vce(cluster stateno)

estat ic
	
logit holiday                                          ///   
imitate_holid                   ///
neigh_holid                         ///
holid_simgovideol ///
l.ig_cir_pcap_x100 ///
l.raceresent l.leg_black l.c.raceresent#l.c.leg_black  ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
confederacy monuments_pcap_x100 l.ln_poptotal  ///
time time2 time3 time4, vce(cluster stateno)

estat ic

*** output to overleaf, 2 confederacy models

eststo clear		
		
tsset stateno year
				
eststo Model_1A: quietly logit recog                                          ///   
imitate_recog                  ///
neigh_recog                         ///
recog_simgovideol ///
l.ig_cir_pcap_x100 ///
l.raceresent l.leg_black l.resentxlegblack ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
confederacy monuments_pcap_x100 l.ln_poptotal     ///  
time time2 time3 time4, vce(cluster stateno)

eststo Model_2A: quietly logit holiday                                          ///   
imitate_holid                   ///
neigh_holid                         ///
holid_simgovideol ///
l.ig_cir_pcap_x100 ///
l.raceresent l.leg_black l.resentxlegblack  ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
confederacy monuments_pcap_x100 l.ln_poptotal  ///
time time2 time3 time4, vce(cluster stateno)

esttab using "confederacy_results.tex", stats(N r2_p chi2 aic, fmt(0 3 3 3 3) ///
labels("No. Observations" "Pseudo-\textit{R}^2" "$\chi^2$" "AIC" )) ///
b(3) se(3) ///
noconstant mtitles("Recog. w/Confederacy" "Holidays w/Confederacy") ///
label starlevels(\dag 0.10 * 0.05 ** 0.01)  ///
order(imitate_recog neigh_recog recog_simgovideol /// 
imitate_holiday neigh_holiday holid_simgovideol ///
L.ig_cir_pcap_x100 ///
L.raceresent L.leg_black L.resentxlegblack ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
L.bowen_legprof_firstdim /// 
confederacy monuments_pcap_x100 L.ln_poptotal) /// 
keep(imitate_recog neigh_recog recog_simgovideol ///
imitate_holiday neigh_holiday holid_simgovideol ///
L.ig_cir_pcap_x100 ///
L.raceresent L.leg_black L.resentxlegblack ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
L.bowen_legprof_firstdim /// 
confederacy monuments_pcap_x100 L.ln_poptotal) ///
coeflabel(imitate_recog "Emul: No. of Sts Adopt Recog. (t-1)" ///
neigh_recog "Emul: Prop. Neighbors Adopt Recog. (t-1)" ///
recog_simgovideol "Emul: Ideol. Sim. to Sts Adopt Recog. (t-1)"  ///
imitate_holiday "Emul: No. of Sts Adopt Holidays (t-1)" ///
neigh_holiday "Emul: Prop. of Neighbors Adopt Holidays (t-1)" ///
holid_simgovideol "Emul: Ideol. Sim to Sts Adopt Holidays (t-1)" ///
confederacy "Confederate State" L.raceresent "Racial Resentment (t-1)" ///
monuments_pcap_x100 "Confederate Monuments per 100k" ///
L.leg_black "Pct. Black Legislators (t-1)" ///
L.resentxlegblack "Resentment X Black Representation (t-1)" ///
L.ig_cir_pcap_x100 "Civil Rights Groups per 100k (t-1)" ///
demgov "Democratic Governor" ///
divided_gov "Divided State Government" ///
leg_dem_prop_all "Proportion of Democratic State Legislators" /// 
gub_election "Gubernatorial Election Year" ///
L.bowen_legprof_firstdim "Legislative Professionalism (t-1)" ///
L.ln_poptotal "St. Population (Logged) (t-1)") ///
noomitted nonotes eqlabels("" "") nogaps wide ///
f replace booktabs alignment(D{.}{.}{.}{.}) 

	************
	* TABLE A3 *
	************

*** Use lynchings variable; create lynchings per 100k

gen lynch_pcap_x100= (lynch/poptotal)*100000
label variable lynch_pcap_x100 "No. of Lynchings per 100k population"

logit recog                                          ///   
imitate_recog                  ///
neigh_recog                         ///
recog_simgovideol ///
l.ig_cir_pcap_x100 ///
l.raceresent l.leg_black l.resentxlegblack ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 lynch_pcap_x100 l.ln_poptotal     ///  
time time2 time3 time4, vce(cluster stateno)

estat ic
	
logit holiday                                          ///   
imitate_holid                   ///
neigh_holid                         ///
holid_simgovideol ///
l.ig_cir_pcap_x100 ///
l.raceresent l.leg_black l.resentxlegblack  ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 lynch_pcap_x100 l.ln_poptotal  ///
time time2 time3 time4, vce(cluster stateno)

estat ic

*** output to overleaf, 2 lynching models

eststo clear		
		
tsset stateno year
				
eststo Model_3A: quietly logit recog                                          ///   
imitate_recog                  ///
neigh_recog                         ///
recog_simgovideol ///
l.ig_cir_pcap_x100 ///
l.raceresent l.leg_black l.resentxlegblack ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 lynch_pcap_x100 l.ln_poptotal     ///  
time time2 time3 time4, vce(cluster stateno)

estat ic
	
eststo Model_4A: quietly logit holiday                                          ///   
imitate_holid                   ///
neigh_holid                         ///
holid_simgovideol ///
l.ig_cir_pcap_x100 ///
l.raceresent l.leg_black l.resentxlegblack   ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 lynch_pcap_x100 l.ln_poptotal  ///
time time2 time3 time4, vce(cluster stateno)

esttab using "lynch_results.tex", stats(N r2_p chi2 aic, fmt(0 3 3 3 3) ///
labels("No. Observations" "Pseudo-\textit{R}^2" "$\chi^2$" "AIC" )) ///
b(3) se(3) ///
noconstant mtitles("Recog. with Lynchings" "Holidays with Lynchings") ///
label starlevels(\dag 0.10 * 0.05 ** 0.01) ///
order(imitate_recog neigh_recog recog_simgovideol ///
imitate_holiday neigh_holiday holid_simgovideol ///
L.ig_cir_pcap_x100 ///
L.raceresent L.leg_black L.resentxlegblack ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
L.bowen_legprof_firstdim /// 
south monuments_pcap_x100 lynch_pcap_x100 L.ln_poptotal) /// 
keep(imitate_recog neigh_recog recog_simgovideol ///
imitate_holiday neigh_holiday holid_simgovideol ///
L.ig_cir_pcap_x100 ///
L.raceresent L.leg_black L.resentxlegblack ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
L.bowen_legprof_firstdim /// 
south monuments_pcap_x100 lynch_pcap_x100 L.ln_poptotal) ///
coeflabel(imitate_recog "Emul: No. of Sts Adopt Recog. (t-1)" ///
neigh_recog "Emul: Prop. Neighbors Adopt Recog. (t-1)" ///
recog_simgovideol "Emul: Ideol. Sim. to Sts Adopt Recog. (t-1)"  ///
imitate_holiday "Emul: No. of Sts Adopt Holidays (t-1)" ///
neigh_holiday "Emul: Prop. of Neighbors Adopt Holidays (t-1)" ///
holid_simgovideol "Emul: Ideol. Sim to Sts Adopt Holidays (t-1)" ///
south "Southern State" L.raceresent "Racial Resentment (t-1)" ///
monuments_pcap_x100 "Confederate Monuments per 100k" ///
lynch_pcap_x100 "Lynchings per 100k" ///
L.leg_black "Pct. Black Legislators (t-1)" ///
L.resentxlegblack "Resentment X Black Representation (t-1)" ///
L.ig_cir_pcap_x100 "Civil Rights Groups per 100k (t-1)" ///
demgov "Democratic Governor" ///
divided_gov "Divided State Government" ///
leg_dem_prop_all "Proportion of Democratic State Legislators" /// 
gub_election "Gubernatorial Election Year" ///
L.bowen_legprof_firstdim "Legislative Professionalism (t-1)" ///
L.ln_poptotal "St. Population (Logged) (t-1)") ///
noomitted nonotes eqlabels("" "") nogaps wide ///
f replace booktabs alignment(D{.}{.}{.}{.}) 


	************
	* TABLE A4 *
	************

*** Use alternative ideology variables: citizen ideology (Berry et al.) and 
*** social liberalism (Caughey & Warshaw) as robustness check of ideological
*** similarity variable

logit recog                                          ///   
imitate_recog                   ///
neigh_recog                         ///
recog_simcitizenideol ///
l.ig_cir_pcap_x100 ///
l.raceresent l.leg_black l.resentxlegblack   ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal  ///
time time2 time3 time4, vce(cluster stateno)

estat ic
	
logit holiday                                          ///   
imitate_holiday                   ///
neigh_holiday                         ///
holid_simcitizenideol ///
l.ig_cir_pcap_x100 ///
l.raceresent l.leg_black l.resentxlegblack   ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal  ///
time time2 time3 time4, vce(cluster stateno)

estat ic

logit recog                                          ///   
imitate_recog                   ///
neigh_recog                         ///
recog_simsoclib ///
l.ig_cir_pcap_x100 ///
l.raceresent l.leg_black l.resentxlegblack   ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal  ///
time time2 time3 time4, vce(cluster stateno)

estat ic
	
logit holiday                                          ///   
imitate_holiday                   ///
neigh_holiday                         ///
holid_simsoclib ///
l.ig_cir_pcap_x100 ///
l.raceresent l.leg_black l.resentxlegblack   ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal  ///
time time2 time3 time4, vce(cluster stateno)

estat ic

*** output to overleaf, 4 alternative ideology models

eststo clear		
		
tsset stateno year
				
eststo Model_5A: quietly logit recog                                          ///   
imitate_recog                   ///
neigh_recog                         ///
recog_simcitizenideol ///
l.ig_cir_pcap_x100 ///
l.raceresent l.leg_black l.resentxlegblack   ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal  ///
time time2 time3 time4, vce(cluster stateno)

eststo Model_6A: quietly logit holiday                                          ///   
imitate_holiday                   ///
neigh_holiday                         ///
holid_simcitizenideol ///
l.ig_cir_pcap_x100 ///
l.raceresent l.leg_black l.resentxlegblack   ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal  ///
time time2 time3 time4, vce(cluster stateno)

eststo Model_7A: quietly logit recog                                          ///   
imitate_recog                   ///
neigh_recog                         ///
recog_simsoclib ///
l.ig_cir_pcap_x100 ///
l.raceresent l.leg_black l.resentxlegblack   ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal  ///
time time2 time3 time4, vce(cluster stateno)

eststo Model_8A: quietly logit holiday                                          ///   
imitate_holiday                   ///
neigh_holiday                         ///
holid_simsoclib ///
l.ig_cir_pcap_x100 ///
l.raceresent l.leg_black l.resentxlegblack   ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal  ///
time time2 time3 time4, vce(cluster stateno)

esttab using "alt_ideology_results.tex", stats(N r2_p chi2 aic, fmt(0 3 3 3 3 3 3 3 3) ///
labels("No. Observations" "Pseudo-\textit{R}^2" "$\chi^2$" "AIC" )) ///
b(3) se(3) ///
noconstant mtitles("Recog. Cit. Ideol." "Holidays Cit. Ideol." "Recog. Social Lib." "Holidays Social Lib.") ///
label starlevels(\dag 0.10 * 0.05 ** 0.01) ///
order(imitate_recog neigh_recog recog_simcitizenideol recog_simsoclib imitate_holiday neigh_holiday ///
holid_simcitizenideol holid_simsoclib L.ig_cir_pcap_x100 ///
L.raceresent L.leg_black L.resentxlegblack ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
L.bowen_legprof_firstdim /// 
south monuments_pcap_x100  L.ln_poptotal) /// 
keep(imitate_recog neigh_recog recog_simcitizenideol recog_simsoclib imitate_holiday neigh_holiday ///
holid_simcitizenideol holid_simsoclib L.ig_cir_pcap_x100 ///
L.raceresent L.leg_black L.resentxlegblack ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
L.bowen_legprof_firstdim /// 
south monuments_pcap_x100  L.ln_poptotal) ///
coeflabel(imitate_recog "Emul: No. of Sts Adopt Recog. (t-1)" ///
neigh_recog "Emul: Prop. Neighbors Adopt Recog. (t-1)" ///
recog_simcitizenideol "Emul: Citizen Ideol. Sim. to Sts Adopt Recog. (t-1)"  ///
recog_simsoclib "Emul: Social Liberalism Sim. to Sts Adopt Recog. (t-1)"  ///
imitate_holiday "Emul: No. of Sts Adopt Holidays (t-1)" ///
neigh_holiday "Emul: Prop. of Neighbors Adopt Holidays (t-1)" ///
holid_simcitizenideol "Emul: Citizen Ideol. Sim. to Sts Adopt Hol. (t-1)"  ///
holid_simsoclib "Emul: Social Liberalism Sim. to Sts Adopt Hol. (t-1)"  ///
south "Southern State" L.raceresent "Racial Resentment (t-1)" ///
monuments_pcap_x100 "Confederate Monuments per 100k" ///
L.leg_black "Pct. Black Legislators (t-1)" ///
L.resentxlegblack "Resentment X Black Representation (t-1)" ///
L.ig_cir_pcap_x100 "Civil Rights Groups per 100k (t-1)" ///
demgov "Democratic Governor" ///
divided_gov "Divided State Government" ///
leg_dem_prop_all "Proportion of Democratic State Legislators" /// 
gub_election "Gubernatorial Election Year" ///
L.bowen_legprof_firstdim "Legislative Professionalism (t-1)" ///
L.ln_poptotal "St. Population (Logged) (t-1)") ///
noomitted nonotes eqlabels("" "") nogaps wide ///
f replace booktabs alignment(D{.}{.}{.}{.}{.}{.}{.}{.}) 

	************
	* TABLE A5 *
	************

*** Run models with Pct Black population, rather than Black State legislators
*** Variable as robustness check. First create interaction variable between
*** racial resentment and pct black population.

logit recog                                          ///   
imitate_recog                   ///
neigh_recog                         ///
recog_simsoclib ///
l.ig_cir ///
l.c.raceresent l.c.pctblack l.c.raceresent#l.c.pctblack  ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal  ///
time time2 time3 time4, vce(cluster stateno)

estat ic
	
logit holiday                                          ///   
imitate_holiday                   ///
neigh_holiday                         ///
holid_simsoclib ///
l.ig_cir ///
l.c.raceresent l.c.pctblack l.c.raceresent#l.c.pctblack  ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal  ///
time time2 time3 time4, vce(cluster stateno)

estat ic

*** output to overleaf, 2 pct Black models

gen resentxpctblack = raceresent * pctblack

eststo clear		
		
tsset stateno year
	
eststo Model_9A: quietly logit recog                                          ///   
imitate_recog                  ///
neigh_recog                         ///
recog_simgovideol ///
l.ig_cir_pcap_x100 ///
l.c.raceresent l.c.pctblack l.c.resentxpctblack ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal     ///  
time time2 time3 time4, vce(cluster stateno)

estat ic
	
eststo Model_10A: quietly logit holiday                                          ///   
imitate_holid                   ///
neigh_holid                         ///
holid_simgovideol ///
l.ig_cir_pcap_x100 ///
l.c.raceresent l.c.pctblack l.c.resentxpctblack  ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal  ///
time time2 time3 time4, vce(cluster stateno)

estat ic

esttab using "pctblack_results.tex", stats(N r2_p chi2 aic, fmt(0 3 3 3 3) ///
labels("No. Observations" "Pseudo-\textit{R}^2" "$\chi^2$" "AIC" )) ///
b(3) se(3) ///
noconstant mtitles("Recog. w/\% Black Pop." "Holidays w/\% Black Pop.") ///
label starlevels(\dag 0.10 * 0.05 ** 0.01) ///
order(imitate_recog neigh_recog recog_simgovideol imitate_holiday neigh_holiday ///
holid_simgovideol L.ig_cir_pcap_x100 L.raceresent L.pctblack L.resentxpctblack ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
L.bowen_legprof_firstdim /// 
south monuments_pcap_x100  L.ln_poptotal) /// 
keep(imitate_recog neigh_recog recog_simgovideol imitate_holiday neigh_holiday ///
holid_simgovideol L.ig_cir_pcap_x100 L.raceresent L.pctblack L.resentxpctblack ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
L.bowen_legprof_firstdim /// 
south monuments_pcap_x100  L.ln_poptotal) ///
coeflabel(imitate_recog "Emul: No. of Sts Adopt Recog. (t-1)" ///
neigh_recog "Emul: Prop. Neighbors Adopt Recog. (t-1)" ///
recog_simgovideol "Emul: Ideol. Sim. to Sts Adopt Recog. (t-1)"  ///
imitate_holiday "Emul: No. of Sts Adopt Holidays (t-1)" ///
neigh_holiday "Emul: Prop. of Neighbors Adopt Holidays (t-1)" ///
holid_simgovideol "Emul: Ideol. Sim to Sts Adopt Holidays (t-1)" ///
south "Southern States" L.raceresent "Racial Resentment (t-1)" ///
monuments_pcap_x100 "Confederate Monuments per 100k"  ///
L.pctblack "Pct. Black St. Population (t-1)" ///
L.resentxpctblack "Resentment X Pct. Black Population (t-1)" ///
L.ig_cir_pcap_x100 "Civil Rights Groups per 100k (t-1)" ///
demgov "Democratic Governor" ///
divided_gov "Divided State Government" ///
leg_dem_prop_all "Proportion of Democratic State Legislators" /// 
gub_election "Gubernatorial Election Year" ///
L.bowen_legprof_firstdim "Legislative Professionalism (t-1)" ///
L.ln_poptotal "St. Population (Logged) (t-1)") ///
noomitted nonotes eqlabels("" "") nogaps wide ///
f replace booktabs alignment(D{.}{.}{.}{.}) 


	************
	* TABLE A6 *
	************

*** Run correlations, Pearson's and Spearman's for Racial Resentment
*** and Pct. Black legislators, as well as Pct. Black legislators
*** and Pct. Black population to sse if high multicolinearity. 
	
corr raceresent leg_black	
corr leg_black pctblack	

spearman raceresent leg_black
spearman leg_black pctblack	
	
*** Add percent black of state population to the Original Models 2 & 4.
*** These do not improve model performance or change any of the other 
*** variables. There is a correlation of 0.8717 between pct. black population
*** and percent black legislators

eststo clear

tsset stateno year
	
logit recog                                          ///   
imitate_recog                  ///
neigh_recog                         ///
recog_simgovideol ///
l.ig_cir_pcap_x100 ///
l.c.raceresent l.c.leg_black l.c.resentxlegblack l.pctblack ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal     ///  
time time2 time3 time4, vce(cluster stateno)

estat ic
	
logit holiday                                          ///   
imitate_holid                   ///
neigh_holid                         ///
holid_simgovideol ///
l.ig_cir_pcap_x100 ///
l.raceresent l.leg_black l.c.resentxlegblack  l.pctblack   ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal  ///
time time2 time3 time4, vce(cluster stateno)

estat ic


*** overleaf models for including pct black along with original models

eststo clear		
		
tsset stateno year
	
eststo Model_15A: quietly logit recog                                          ///   
imitate_recog                  ///
neigh_recog                         ///
recog_simgovideol ///
l.ig_cir_pcap_x100 ///
l.c.raceresent l.c.leg_black l.c.resentxlegblack  l.pctblack ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal     ///  
time time2 time3 time4, vce(cluster stateno)

estat ic
	
eststo Model_16A: quietly logit holiday         ///   
imitate_holid                   ///
neigh_holid                         ///
holid_simgovideol ///
l.ig_cir_pcap_x100 ///
l.raceresent l.leg_black l.c.resentxlegblack  l.pctblack   ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal  ///
time time2 time3 time4, vce(cluster stateno)

estat ic

esttab using "addpctblack_results.tex", stats(N r2_p chi2 aic, fmt(0 3 3 3 3) ///
labels("No. Observations" "Pseudo-\textit{R}^2" "$\chi^2$" "AIC" )) ///
b(3) se(3) ///
noconstant mtitles("Recog. w/\% Black Pop." "Holidays w/\% Black Pop.") ///
label starlevels(\dag 0.10 * 0.05 ** 0.01) ///
order(imitate_recog neigh_recog recog_simgovideol imitate_holiday neigh_holiday ///
holid_simgovideol L.ig_cir_pcap_x100 L.raceresent L.leg_black L.pctblack L.resentxlegblack  ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
L.bowen_legprof_firstdim /// 
south monuments_pcap_x100  L.ln_poptotal) /// 
keep(imitate_recog neigh_recog recog_simgovideol imitate_holiday neigh_holiday ///
holid_simgovideol L.ig_cir_pcap_x100 L.raceresent L.leg_black L.pctblack L.resentxlegblack  ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
L.bowen_legprof_firstdim /// 
south monuments_pcap_x100  L.ln_poptotal) ///
coeflabel(imitate_recog "Emul: No. of Sts Adopt Recog. (t-1)" ///
neigh_recog "Emul: Prop. Neighbors Adopt Recog. (t-1)" ///
recog_simgovideol "Emul: Ideol. Sim. to Sts Adopt Recog. (t-1)"  ///
imitate_holiday "Emul: No. of Sts Adopt Holidays (t-1)" ///
neigh_holiday "Emul: Prop. of Neighbors Adopt Holidays (t-1)" ///
holid_simgovideol "Emul: Ideol. Sim to Sts Adopt Holidays (t-1)" ///
south "Southern States" L.raceresent "Racial Resentment (t-1)" ///
monuments_pcap_x100 "Confederate Monuments per 100k"  ///
L.leg_black "Pct Black Legislators (t-1)" ///
L.pctblack "Pct. Black St. Population (t-1)" ///
L.resentxlegblack  "Resentment X Pct. Black Legislators (t-1)" ///
L.ig_cir_pcap_x100 "Civil Rights Groups per 100k (t-1)" ///
demgov "Democratic Governor" ///
divided_gov "Divided State Government" ///
leg_dem_prop_all "Proportion of Democratic State Legislators" /// 
gub_election "Gubernatorial Election Year" ///
L.bowen_legprof_firstdim "Legislative Professionalism (t-1)" ///
L.ln_poptotal "St. Population (Logged) (t-1)") ///
noomitted nonotes eqlabels("" "") nogaps wide ///
f replace booktabs alignment(D{.}{.}{.}{.}) 

	************
	* TABLE A7 *
	************

*** Check alternative Interest Group measure in Models 2 & 4.
*** Garlick/Cluverius Measure

gen ig_cir_gc_pcap_x100 = (ig_cir_gc/poptotal)*100000

eststo clear

tsset stateno year
	
eststo Model_11A: quietly logit recog                                          ///   
imitate_recog                  ///
neigh_recog                         ///
recog_simgovideol ///
l.ig_cir_gc_pcap_x100 ///
l.c.raceresent l.c.leg_black l.c.resentxlegblack  ///  
demgov divided_gov leg_dem_prop_all gub_election   ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal     ///  
time time2 time3 time4, vce(cluster stateno)

estat ic
	
eststo Model_12A: quietly logit holiday                                          ///   
imitate_holid                   ///
neigh_holid                         ///
holid_simgovideol ///
l.ig_cir_gc_pcap_x100 ///
l.raceresent l.leg_black l.resentxlegblack     ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal  ///
time time2 time3 time4, vce(cluster stateno)

estat ic

esttab using "igalt_results.tex", stats(N r2_p chi2 aic, fmt(0 3 3 3 3) ///
labels("No. Observations" "Pseudo-\textit{R}^2" "$\chi^2$" "AIC" )) ///
b(3) se(3) ///
noconstant mtitles("Recog. w/G-C Interest Group" "Holidays w/G-C Interest Group") ///
label starlevels(\dag 0.10 * 0.05 ** 0.01) ///
order(imitate_recog neigh_recog recog_simgovideol imitate_holiday neigh_holiday ///
holid_simgovideol L.ig_cir_gc_pcap_x100 L.raceresent L.resentxlegblack  ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
L.bowen_legprof_firstdim /// 
south monuments_pcap_x100  L.ln_poptotal) /// 
keep(imitate_recog neigh_recog recog_simgovideol imitate_holiday neigh_holiday ///
holid_simgovideol L.ig_cir_gc_pcap_x100 L.raceresent  L.resentxlegblack  ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
L.bowen_legprof_firstdim /// 
south monuments_pcap_x100  L.ln_poptotal) ///
coeflabel(imitate_recog "Emul: No. of Sts Adopt Recog. (t-1)" ///
neigh_recog "Emul: Prop. Neighbors Adopt Recog. (t-1)" ///
recog_simgovideol "Emul: Ideol. Sim. to Sts Adopt Recog. (t-1)"  ///
imitate_holiday "Emul: No. of Sts Adopt Holidays (t-1)" ///
neigh_holiday "Emul: Prop. of Neighbors Adopt Holidays (t-1)" ///
holid_simgovideol "Emul: Ideol. Sim to Sts Adopt Holidays (t-1)" ///
south "Southern States" L.raceresent "Racial Resentment (t-1)" ///
monuments_pcap_x100 "Confederate Monuments per 100k"  ///
L.pctblack "Pct. Black St. Population (t-1)" ///
L.resentxlegblack  "Resentment X Pct. Black Legislators (t-1)" ///
L.ig_cir_gc_pcap_x100 "Garlick/Cluverius Civil Rights Grps p/100k (t-1)" ///
demgov "Democratic Governor" ///
divided_gov "Divided State Government" ///
leg_dem_prop_all "Proportion of Democratic State Legislators" /// 
gub_election "Gubernatorial Election Year" ///
L.bowen_legprof_firstdim "Legislative Professionalism (t-1)" ///
L.ln_poptotal "St. Population (Logged) (t-1)") ///
noomitted nonotes eqlabels("" "") nogaps wide ///
f replace booktabs alignment(D{.}{.}{.}{.}) 

	************
	* TABLE A8 *
	************
	
*** Run random effects models

xtset stateno year
	
xtlogit recog                                          ///   
imitate_recog                  ///
neigh_recog                         ///
recog_simgovideol ///
l.ig_cir_pcap_x100 ///
l.c.raceresent l.c.leg_black l.c.raceresent#l.c.leg_black ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal     ///  
time time2 time3 time4, re

estat ic
	
xtlogit holiday                                          ///   
imitate_holid                   ///
neigh_holid                         ///
holid_simgovideol ///
l.ig_cir_pcap_x100 ///
l.c.raceresent l.c.leg_black l.c.raceresent#l.c.leg_black  ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal ///
time time2 time3, re

estat ic

*** output to overleaf, 2 random effects models

eststo clear		
		
xtset stateno year
				
eststo Model_13A: quietly xtlogit recog                                          ///   
imitate_recog                  ///
neigh_recog                         ///
recog_simgovideol ///
l.ig_cir_pcap_x100 ///
l.raceresent l.leg_black l.resentxlegblack ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal     ///  
time time2 time3 time4, re

eststo Model_14A: quietly xtlogit holiday                                          ///   
imitate_holid                   ///
neigh_holid                         ///
holid_simgovideol ///
l.ig_cir_pcap_x100 ///
l.raceresent l.leg_black l.resentxlegblack  ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal  ///
time time2 time3, re

esttab using "randomeffects_results.tex", stats(N chi2 aic, fmt(0 3 3 3 3) ///
labels("No. Observations" "$\chi^2$" "AIC" )) ///
b(3) se(3) ///
noconstant mtitles("Recog. Random Effects" "Holidays Random Effects") ///
label starlevels(\dag 0.10 * 0.05 ** 0.01)  ///
order(imitate_recog neigh_recog recog_simgovideol ///
imitate_holiday neigh_holiday holid_simgovideol ///
L.ig_cir_pcap_x100 ///
L.raceresent L.leg_black L.resentxlegblack ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
L.bowen_legprof_firstdim /// 
south monuments_pcap_x100 L.ln_poptotal) /// 
keep(imitate_recog neigh_recog recog_simgovideol ///
imitate_holiday neigh_holiday holid_simgovideol ///
L.ig_cir_pcap_x100 ///
L.raceresent L.leg_black L.resentxlegblack ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
L.bowen_legprof_firstdim /// 
south monuments_pcap_x100 L.ln_poptotal) ///
coeflabel(imitate_recog "Emul: No. of Sts Adopt Recog. (t-1)" ///
neigh_recog "Emul: Prop. Neighbors Adopt Recog. (t-1)" ///
recog_simgovideol "Emul: Ideol. Sim. to Sts Adopt Recog. (t-1)"  ///
imitate_holiday "Emul: No. of Sts Adopt Holidays (t-1)" ///
neigh_holiday "Emul: Prop. of Neighbors Adopt Holidays (t-1)" ///
holid_simgovideol "Emul: Ideol. Sim to Sts Adopt Holidays (t-1)" ///
south "Southern State" L.raceresent "Racial Resentment (t-1)" ///
monuments_pcap_x100 "Confederate Monuments per 100k" ///
L.leg_black "Pct. Black Legislators (t-1)" ///
L.resentxlegblack "Resentment X Black Representation (t-1)" ///
L.ig_cir_pcap_x100 "Civil Rights Groups per 100k (t-1)" ///
demgov "Democratic Governor" ///
divided_gov "Divided State Government" ///
leg_dem_prop_all "Proportion of Democratic State Legislators" /// 
gub_election "Gubernatorial Election Year" ///
L.bowen_legprof_firstdim "Legislative Professionalism (t-1)" ///
L.ln_poptotal "St. Population (Logged) (t-1)") ///
noomitted nonotes eqlabels("" "") nogaps wide ///
f replace booktabs alignment(D{.}{.}{.}{.}) 


	************
	* TABLE A1 *
	************

	*****************
	* Summary Stats *
	*****************

eststo clear		
	
estpost tabstat recog holiday imitate_recog imitate_holiday ///
neigh_recog neigh_holiday                         ///
recog_simgovideol holid_simgovideol ///
ig_cir_pcap_x100 ///
raceresent leg_black resentxlegblack   ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
bowen_legprof_firstdim /// 
south monuments_pcap_x100 ln_poptotal,  ///  
c(stat) stat(mean sd min max n)

*** Relabel with shorter variable labels:

label var recog "Adopted Juneteenth Recognition" 
label var holiday "Adopted Juneteenth Holiday"
label var imitate_recog "No. of Sts Adopting Recognitions"
label var imitate_holiday "No. of Sts Adopting Holidays" 
label var neigh_recog "Prop. Neighbor Sts Adopting Recog." 
label var neigh_holiday "Prop. Neighbor Sts Adopting Hol."        
label var recog_simgovideol "Ideol. Similarity to Sts Adopting Recog."
label var holid_simgovideol "Ideol. Similarity to Sts Adopting Hol." 
label var ln_poptotal "St. Population (Logged)" 
label var south "Southern State"   
label var raceresent "Racial Resentment" 
label var monuments_pcap_x100 "Confederate Monuments per 100k"  
label var bowen_legprof_firstdim "Leg. Professionalism, 1st Dim." 
label var ig_cir_pcap_x100 "Civil Rights Interest Groups per 100k" 
label var leg_black "Pct. Black Legislators in State"     
label var resentxlegblack "Resentment X Black Representation"
label var demgov "Democratic Governor"
label var divided_gov "Divided St. Government"
label var leg_dem_prop_all "Proportion Democratic Legislators"
label var gub_election "Gubernatorial Election Yr"

esttab, ///
	cells("mean(fmt(%15.2fc)) sd(fmt(%15.2fc)) min max count(fmt(%15.0fc))") ///
	nostar unstack nonumber ///
	nomtitle nonote noobs wide label collabels("Mean" "SD" "Min" "Max" "N")

esttab using "summarystats.tex", replace ///
 cells("mean(fmt(%13.2fc)) sd(fmt(%13.2fc)) min max count(fmt(%13.0fc))") nonumber ///
 nomtitle nonote noobs wide label booktabs f  ///
 collabels("Mean" "SD" "Min" "Max" "N")
 
		*********************************
		* Print out Models for Overleaf *
		*********************************

eststo clear		
		
tsset stateno year
				
eststo Model_1: quietly logit recog                                          ///   
imitate_recog                   ///
neigh_recog                         ///
recog_simgovideol ///
l.ig_cir_pcap_x100 ///
l.raceresent l.leg_black  ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal  ///
time time2 time3 time4, vce(cluster stateno) nolog				

eststo Model_2: quietly logit recog                                          ///   
imitate_recog                   ///
neigh_recog                         ///
recog_simgovideol ///
l.ig_cir_pcap_x100 ///
l.raceresent l.leg_black l.resentxlegblack ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal  ///
time time2 time3 time4, vce(cluster stateno) nolog

eststo Model_3: quietly logit holiday                                          ///   
imitate_holiday                  ///
neigh_holiday                         ///
holid_simgovideol ///
l.ig_cir_pcap_x100 ///
l.raceresent l.leg_black  ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal  ///
time time2 time3 time4, vce(cluster stateno) nolog				

eststo Model_4: quietly logit holiday                                          ///   
imitate_holiday                  ///
neigh_holiday                         ///
holid_simgovideol ///
l.ig_cir_pcap_x100 ///
l.raceresent l.leg_black l.resentxlegblack ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
l.bowen_legprof_firstdim /// 
south monuments_pcap_x100 l.ln_poptotal  ///
time time2 time3 time4, vce(cluster stateno) nolog

esttab, stats(N r2_p chi2 aic, fmt(0 3 3 3 3 3 3 3 3) labels("No. Observations" "Pseudo-\textit{R}^2" "$\chi^2$" "AIC")) ///
b(3) se(3) noconstant mtitles("Recognitions" "Recog. w/Interaction" "Holidays" "Hol. w/Interaction") ///
label starlevels(\dag 0.10 * 0.05 ** 0.01) ///
order(imitate_recog neigh_recog recog_simgovideol imitate_holiday neigh_holiday ///
holid_simgovideol L.ig_cir_pcap_x100 ///
L.raceresent L.leg_black L.resentxlegblack ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
L.bowen_legprof_firstdim /// 
south monuments_pcap_x100  L.ln_poptotal) /// 
keep(imitate_recog neigh_recog recog_simgovideol imitate_holiday neigh_holiday ///
holid_simgovideol L.ig_cir_pcap_x100 ///
L.raceresent L.leg_black L.resentxlegblack ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
L.bowen_legprof_firstdim /// 
south monuments_pcap_x100  L.ln_poptotal) ///
coeflabel(imitate_recog "Emul: \# of Sts Adopt Recog. (t-1)" ///
neigh_recog "Emul: Prop. Neighbors Adopt Recog. (t-1)" ///
recog_simgovideol "Emul: Ideol. Sim. to Sts Adopt Recog. (t-1)"  ///
imitate_holiday "Emul: \# of Sts Adopt Holidays (t-1)" ///
neigh_holiday "Emul: Prop. of Neighbors Adopt Holidays (t-1)" ///
holid_simgovideol "Emul: Ideol. Sim to Sts Adopt Holidays (t-1)" ///
south "Southern State" L.raceresent "Racial Resentment (t-1)" ///
monuments_pcap_x100 "Confederate Monuments per 100k" ///
L.leg_black "Pct. Black Legislators (t-1)" ///
L.resentxlegblack "Resentment X Black Representation (t-1)" ///
L.ig_cir_pcap_x100 "Civil Rights Groups per 100k (t-1)" ///
demgov "Democratic Governor" ///
divided_gov "Divided State Government" ///
leg_dem_prop_all "Proportion of Democratic State Legislators" /// 
gub_election "Gubernatorial Election Year" ///
L.bowen_legprof_firstdim "Legislative Professionalism (t-1)" ///
L.ln_poptotal "St. Population (Logged) (t-1)") ///
noomitted nonotes eqlabels("" "") nogaps wide sfmt(0) ///
replace

esttab using "modelresults.tex", stats(N r2_p chi2 aic, fmt(0 3 3 3 3 3 3 3 3) ///
labels("No. Observations" "Pseudo-\textit{R}^2" "$\chi^2$" "AIC" )) ///
b(3) se(3) ///
noconstant mtitles("Recognitions" "Recog. w/Interaction" "Holidays" "Hol. w/Interaction") ///
label starlevels(\dag 0.10 * 0.05 ** 0.01) ///
order(imitate_recog neigh_recog recog_simgovideol imitate_holiday neigh_holiday ///
holid_simgovideol L.ig_cir_pcap_x100 ///
L.raceresent L.leg_black L.resentxlegblack ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
L.bowen_legprof_firstdim /// 
south monuments_pcap_x100  L.ln_poptotal) /// 
keep(imitate_recog neigh_recog recog_simgovideol imitate_holiday neigh_holiday ///
holid_simgovideol L.ig_cir_pcap_x100 ///
L.raceresent L.leg_black L.resentxlegblack ///  
demgov divided_gov leg_dem_prop_all gub_election  ///
L.bowen_legprof_firstdim /// 
south monuments_pcap_x100  L.ln_poptotal) ///
coeflabel(imitate_recog "Emul: \# of Sts Adopt Recog. (t-1)" ///
neigh_recog "Emul: Prop. Neighbors Adopt Recog. (t-1)}" ///
recog_simgovideol "Emul: Ideol. Sim. to Sts Adopt Recog. (t-1)}"  ///
imitate_holiday "Emul: \# of Sts Adopt Holidays (t-1)}" ///
neigh_holiday "Emul: Prop. of Neighbors Adopt Holidays (t-1)}" ///
holid_simgovideol "Emul: Ideol. Sim to Sts Adopt Holidays (t-1)}" ///
south "Southern State" L.raceresent "Racial Resentment (t-1)" ///
monuments_pcap_x100 "Confederate Monuments per 100k" ///
L.leg_black "Pct. Black Legislators (t-1)" ///
L.resentxlegblack "Resentment X Black Representation (t-1)" ///
L.ig_cir_pcap_x100 "Civil Rights Groups per 100k (t-1)" ///
demgov "Democratic Governor" ///
divided_gov "Divided State Government" ///
leg_dem_prop_all "Proportion of Democratic State Legislators" /// 
gub_election "Gubernatorial Election Year" ///
L.bowen_legprof_firstdim "Legislative Professionalism (t-1)" ///
L.ln_poptotal "St. Population (Logged) (t-1)") ///
noomitted nonotes eqlabels("" "") nogaps wide ///
f replace booktabs alignment(D{.}{.}{.}{.}{.}{.}{.}{.}) 

		*************
		* Save Data *
		*************

save juneteenth_prq_replication.dta, replace 		
	
		*********
		* Close *
		*********

log close
		
		
